package models

import "errors"

type Todo struct {
	Id     int    `json:"id"`
	Title  string `json:"title"`
	Status bool   `json:"status"`
}

func (t *Todo) Insert() (err error) {
	result, err := sqlDb.Exec("insert into todo(title) values (?)", t.Title)
	if err != nil {
		return
	}

	id, err := result.LastInsertId()
	if err != nil {
		return
	}

	t.Id = int(id)
	return
}

func GetAllTodo() (result []Todo, err error) {
	err = sqlDb.Select(&result, "select * from todo ")
	return
}

func (t *Todo) GetTodoById() (err error) {
	err = sqlDb.Get(t, "select * from todo where id=? ", t.Id)
	return
}

func (t *Todo) DelTodoById() (err error) {
	_, err = sqlDb.Exec("delete from todo where id=? ", t.Id)
	return
}

func (t *Todo) UpdateTodoById() (err error) {
	sqlresult, err := sqlDb.Exec("update todo set title=? , status=? where id=?", t.Title, t.Status, t.Id)
	if err != nil {
		return
	}

	rowNum, _ := sqlresult.RowsAffected()
	if rowNum > 0 {
		return errors.New("更新失败")
	}
	return
}
